A write operation to a rotating disk drive writes to a physical location on the disk. In other words, there is a one-to-one mapping between the received address and the physical address on the disk. Solid state drives (SSDs) may have an indirection table that creates a virtual address space for the received storage operations. The indirection table maps the addresses for the received storage commands to the virtual addresses assigned to the data by the SSD.
The SSD may use a scratch storage area to remap data from one location to another. The larger the available scratch storage area, the more efficient the SSD is in remapping data to different locations. The storage device manufacturer or enterprise user may wish to reserve some percentage of Flash memory in the SSD drive for these scratch operations. For example, the SSD may be able to perform larger data block transfers in a shorter amount of time when a larger scratch storage area is reserved.
Once a storage area in the SSD is used for storing data, it may no longer be available for the scratch storage operations, even if the storage area is never used again for storing data. For example, some storage systems only support read and write operations and have no way to invalidate or “free up” previously used address space.
Some SSD drives provide a trim command that can invalidate data in previously written to address spaces. However, the trim command is only supported by certain combinations of operating systems and file management systems, such as those used with the Microsoft® Windows® operating system. As mentioned above, other operating systems do not support the trim command and can only issue read and write operations. Even within operating systems that do support the trim command, the trim commands are controlled by that operating system, not by the applications originating the storage operations. Thus, unused or underutilized storage space may unnecessarily reduce the available scratch space in a SSD drive and thus reduce overall drive efficiency